]> granicus.if.org Git - python/commitdiff
Merge #15249: Mangle From lines correctly when body contains invalid bytes.
authorR David Murray <rdmurray@bitdance.com>
Fri, 24 Aug 2012 15:23:50 +0000 (11:23 -0400)
committerR David Murray <rdmurray@bitdance.com>
Fri, 24 Aug 2012 15:23:50 +0000 (11:23 -0400)
Fix by Colin Su.  Test by me, based on a test written by Petri Lehtinen.

1  2 
Lib/email/generator.py
Lib/test/test_email/test_email.py
Misc/ACKS
Misc/NEWS

index 8413f3b9a81b6259c0ea2dc898fbabee2fac27b4,c6bfb704f53f458d9688a01f52237ea2a2578de0..899adbc7af33dc72a266aa89cbac25492239c902
@@@ -399,7 -390,9 +399,9 @@@ class BytesGenerator(Generator)
          # just write it back out.
          if msg._payload is None:
              return
 -        if _has_surrogates(msg._payload):
 +        if _has_surrogates(msg._payload) and not self.policy.cte_type=='7bit':
+             if self._mangle_from_:
+                 msg._payload = fcre.sub(">From ", msg._payload)
              self.write(msg._payload)
          else:
              super(BytesGenerator,self)._handle_text(msg)
Simple merge
diff --cc Misc/ACKS
Simple merge
diff --cc Misc/NEWS
index 81224f4135ad7aa23a73cd80894628b95aa8a10c,73f058c7b8bf83514c8b4c3b3c4fc13f46237f4e..227f2acc88fc098fc17b7a0eae5aa14eadefb182
+++ b/Misc/NEWS
@@@ -23,404 -18,427 +23,407 @@@ Core and Builtin
  - Issue #15604: Update uses of PyObject_IsTrue() to check for and handle
    errors correctly.  Patch by Serhiy Storchaka.
  
 -- Issue #13119: sys.stdout and sys.stderr are now using "\r\n" newline on
 -  Windows, as Python 2.
 +- Issue #14846: importlib.FileFinder now handles the case where the
 +  directory being searched is removed after a previous import attempt
  
 -- Issue #14579: Fix CVE-2012-2135: vulnerability in the utf-16 decoder after
 -  error handling.  Patch by Serhiy Storchaka.
 +Library
 +-------
  
 -- Issue #15404: Refleak in PyMethodObject repr.
++- Issue #15249: BytesGenerator now correctly mangles From lines (when
++  requested) even if the body contains undecodable bytes.
 -- Issue #15394: An issue in PyModule_Create that caused references to
 -  be leaked on some error paths has been fixed.  Patch by Julia Lawall.
 +- Issue #15777: Fix a refleak in _posixsubprocess.
  
 -- Issue #15368: An issue that caused bytecode generation to be
 -  non-deterministic when using randomized hashing (-R) has been fixed.
 +- Issue ##665194: Update email.utils.localtime to use datetime.astimezone and
 +  correctly handle historic changes in UTC offsets.
  
 -- Issue #15020: The program name used to search for Python's path is now
 -  "python3" under Unix, not "python".
 +- Issue #15199: Fix JavaScript's default MIME type to application/javascript.
 +  Patch by Bohuslav Kabrda.
  
 -- Issue #15033: Fix the exit status bug when modules invoked using -m swith,
 -  return the proper failure return value (1). Patch contributed by Jeff Knupp.
 +- Issue #12643: code.InteractiveConsole now respects sys.excepthook when
 +  displaying exceptions (Patch by Aaron Iles)
  
 -- Issue #12268: File readline, readlines and read() or readall() methods
 -  no longer lose data when an underlying read system call is interrupted.
 -  IOError is no longer raised due to a read system call returning EINTR
 -  from within these methods.
 +- Issue #13579: string.Formatter now understands the 'a' conversion specifier.
  
 -- Issue #15142: Fix reference leak when deallocating instances of types
 -  created using PyType_FromSpec().
 +- Issue #15595: Fix subprocess.Popen(universal_newlines=True)
 +  for certain locales (utf-16 and utf-32 family). Patch by Chris Jerdonek.
  
 -- Issue #10053: Don't close FDs when FileIO.__init__ fails. Loosely based on
 -  the work by Hirokazu Yamamoto.
 +- Issue #15477: In cmath and math modules, add workaround for platforms whose
 +  system-supplied log1p function doesn't respect signs of zeros.
  
 -- Issue #14775: Fix a potential quadratic dict build-up due to the garbage
 -  collector repeatedly trying to untrack dicts.
 +- Issue #15715: importlib.__import__() will silence an ImportError when the use
 +  of fromlist leads to a failed import.
  
 -- Issue #14494: Fix __future__.py and its documentation to note that
 -  absolute imports are the default behavior in 3.0 instead of 2.7.
 -  Patch by Sven Marnach.
 +- Issue #14669: Fix pickling of connections and sockets on MacOSX
 +  by sending/receiving an acknowledgment after file descriptor transfer.
 +  TestPicklingConnection has been reenabled for MacOSX.
  
 -- Issue #14761: Fix potential leak on an error case in the import machinery.
 +- Issue #11062: Fix adding a message from file to Babyl mailbox.
  
 -- Issue #14699: Fix calling the classmethod descriptor directly.
 +- Issue #15646: Prevent equivalent of a fork bomb when using
 +  multiprocessing on Windows without the "if __name__ == '__main__'"
 +  idiom.
  
 -- Issue #14433: Prevent msvcrt crash in interactive prompt when stdin
 -  is closed.
 +- Issue #15678: Fix IDLE menus when started from OS X command line
 +  (3.3.0b2 regression).
  
 -- Issue #11603 (again): Setting __repr__ to __str__ now raises a RuntimeError
 -  when repr() or str() is called on such an object.
 +C API
 +-----
  
 -- Issue #14658: Fix binding a special method to a builtin implementation of a
 -  special method with a different name.
 +Extension Modules
 +-----------------
  
 -- Issue #14630: Fix a memory access bug for instances of a subclass of int
 -  with value 0.
 +Tools/Demos
 +-----------
  
 -- Issue #14612: Fix jumping around with blocks by setting f_lineno.
 +Documentation
 +-------------
  
 -- Issue #14607: Fix keyword-only arguments which started with ``__``.
 +- Create a 'Concurrent Execution' section in the docs, and split up the
 +  'Optional Operating System Services' section to use a more user-centric
 +  classification scheme (splitting them across the new CE section, IPC and
 +  text processing). Operating system limitatons can be reflected with
 +  the Sphinx :platform: tag, it doesn't make sense as part of the Table of
 +  Contents.
  
 -- Issue #13889: Check and (if necessary) set FPU control word before calling
 -  any of the dtoa.c string <-> float conversion functions, on MSVC builds of
 -  Python.  This fixes issues when embedding Python in a Delphi app.
 +- Issue #4966: Bring the sequence docs up to date for the Py3k transition
 +  and the many language enhancements since they were original written
  
 -- Issue #14474: Save and restore exception state in thread.start_new_thread()
 -  while writing error message if the thread leaves a unhandled exception.
 +- The "path importer" misnomer has been replaced with Eric Snow's
 +  more-awkward-but-at-least-not-wrong suggestion of "path based finder" in
 +  the import system reference docs
  
 -- Issue #13019: Fix potential reference leaks in bytearray.extend().  Patch
 -  by Suman Saha.
 +- Issue #15640: Document importlib.abc.Finder as deprecated.
  
 -- Issue #14378: Fix compiling ast.ImportFrom nodes with a "__future__" string as
 -  the module name that was not interned.
 +- Issue #15630: Add an example for "continue" stmt in the tutorial. Patch by
 +  Daniel Ellis.
  
 -- Issue #14331: Use significantly less stack space when importing modules by
 -  allocating path buffers on the heap instead of the stack.
 +Tests
 +-----
  
 -- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not
 -  passed strings.
 +- Issue #15747: ZFS always returns EOPNOTSUPP when attempting to set the
 +  UF_IMMUTABLE flag (via either chflags or lchflags); refactor affected
 +  tests in test_posix.py to account for this.
  
 -- Issue #1469629: Allow cycles through an object's __dict__ slot to be
 -  collected. (For example if ``x.__dict__ is x``).
 +- Issue #15285: Refactor the approach for testing connect timeouts using
 +  two external hosts that have been configured specifically for this type
 +  of test.
  
 -- Issue #14172: Fix reference leak when marshalling a buffer-like object
 -  (other than a bytes object).
 +- Issue #15743: Remove the deprecated method usage in urllib tests. Patch by
 +  Jeff Knupp.
  
 -- Issue #13521: dict.setdefault() now does only one lookup for the given key,
 -  making it "atomic" for many purposes.  Patch by Filip Gruszczyński.
 +- Issue #15615: Add some tests for the json module's handling of invalid
 +  input data.  Patch by Kushal Das.
  
 -- Issue #14471: Fix a possible buffer overrun in the winreg module.
 +Build
 +-----
  
 -Library
 --------
 +- Output lib files for PGO build into PGO directory.
  
 -- Issue #15249: BytesGenerator now correctly mangles From lines (when
 -  requested) even if the body contains undecodable bytes.
 +- Pick up 32-bit launcher from PGO directory on 64-bit PGO build.
  
 -- Issue #15777: Fix a refleak in _posixsubprocess.
 +- Drop PC\python_nt.h as it's not used. Add input dependency on custom
 +  build step.
  
 -- Issue #15199: Fix JavaScript's default MIME type to application/javascript.
 -  Patch by Bohuslav Kabrda.
 +- Issue #15511: Drop explicit dependency on pythonxy.lib from _decimal
 +  amd64 configuration.
  
 -- Issue #13579: string.Formatter now understands the 'a' conversion specifier.
 +- Add missing PGI/PGO configurations for pywlauncher.
  
 -- Issue #15595: Fix subprocess.Popen(universal_newlines=True)
 -  for certain locales (utf-16 and utf-32 family). Patch by Chris Jerdonek.
 +- Issue #15645: Ensure 2to3 grammar pickles are properly installed.
  
 -- Issue #15477: In cmath and math modules, add workaround for platforms whose
 -  system-supplied log1p function doesn't respect signs of zeros.
  
 -- Issue #11062: Fix adding a message from file to Babyl mailbox.
 +What's New in Python 3.3.0 Beta 2?
 +==================================
  
 -- Issue #15646: Prevent equivalent of a fork bomb when using
 -  multiprocessing on Windows without the "if __name__ == '__main__'"
 -  idiom.
 +*Release date: 12-Aug-2012*
  
 -- Issue #15424: Add a __sizeof__ implementation for array objects.
 -  Patch by Ludwig Hähne.
 +Core and Builtins
 +-----------------
  
 -- Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog
 -  ended with '\'. Patch by Roger Serwy.
 +- Issue #15568: Fix the return value of "yield from" when StopIteration is
 +  raised by a custom iterator.
  
 -- Issue #15538: Fix compilation of the getnameinfo() / getaddrinfo()
 -  emulation code.  Patch by Philipp Hagemeister.
 +- Issue #13119: sys.stdout and sys.stderr are now using "\r\n" newline on
 +  Windows, as Python 2.
  
 -- Issue #9803: Don't close IDLE on saving if breakpoint is open.
 -  Patch by Roger Serwy.
 +- Issue #15534: Fix the fast-search function for non-ASCII Unicode strings.
  
 -- Issue #12288: Consider '0' and '0.0' as valid initialvalue
 -  for tkinter SimpleDialog.
 +- Issue #15508: Fix the docstring for __import__ to have the proper default
 +  value of 0 for 'level' and to not mention negative levels since they are not
 +  supported.
  
 -- Issue #15512: Add a __sizeof__ implementation for parser.
 -  Patch by Serhiy Storchaka.
 +- Issue #15425: Eliminated traceback noise from more situations involving
 +  importlib.
  
 -- Issue #15469: Add a __sizeof__ implementation for deque objects.
 -  Patch by Serhiy Storchaka.
 +- Issue #14578: Support modules registered in the Windows registry again.
  
 -- Issue #15489: Add a __sizeof__ implementation for BytesIO objects.
 -  Patch by Serhiy Storchaka.
 +- Issue #15466: Stop using TYPE_INT64 in marshal, to make importlib.h (and other
 +  byte code files) equal between 32-bit and 64-bit systems.
  
 -- Issue #15487: Add a __sizeof__ implementation for buffered I/O objects.
 -  Patch by Serhiy Storchaka.
 +- Issue #1692335: Move initial exception args assignment to
 +  "BaseException.__new__" to help pickling of naive subclasses.
  
 -- Issue #6056: Make multiprocessing use setblocking(True) on the
 -  sockets it uses.  Original patch by J Derek Wilson.
 +- Issue #12834: Fix PyBuffer_ToContiguous() for non-contiguous arrays.
  
 -- Issue #15041: update "see also" list in tkinter documentation.
 +- Issue #15456: Fix code __sizeof__ after #12399 change.  Patch by Serhiy
 +  Storchaka.
  
 -- Issue #15402: An issue in the struct module that caused sys.getsizeof to
 -  return incorrect results for struct.Struct instances has been fixed.
 -  Initial patch by Serhiy Storchaka.
 +- Issue #15404: Refleak in PyMethodObject repr.
  
 -- Issue #15232: when mangle_from is True, email.Generator now correctly mangles
 -  lines that start with 'From ' that occur in a MIME preamble or epilogue.
 +- Issue #15394: An issue in PyModule_Create that caused references to be leaked
 +  on some error paths has been fixed.  Patch by Julia Lawall.
  
 -- Issue #13922: argparse no longer incorrectly strips '--'s that appear
 -  after the first one.
 +- Issue #15368: An issue that caused bytecode generation to be non-deterministic
 +  has been fixed.
  
 -- Issue #12353: argparse now correctly handles null argument values.
 +- Issue #15202: Consistently use the name "follow_symlinks" for new parameters
 +  in os and shutil functions.
  
 -- Issues #10017 and #14998: Fix TypeError using pprint on dictionaries with
 -  user-defined types as keys or other unorderable keys.
 +- Issue #15314: __main__.__loader__ is now set correctly during interpreter
 +  startup.
  
 -- Issue #14635: telnetlib will use poll() rather than select() when possible
 -  to avoid failing due to the select() file descriptor limit.
 +- Issue #15111: When a module imported using 'from import' has an ImportError
 +  inside itself, don't mask that fact behind a generic ImportError for the
 +  module itself.
  
 -- Issue #15180: Clarify posixpath.join() error message when mixing str & bytes
 +- Issue #15293: Add GC support to the AST base node type.
  
 -- Issue #15230: runpy.run_path now correctly sets __package__ as described
 -  in the documentation
 +- Issue #15291: Fix a memory leak where AST nodes where not properly
 +  deallocated.
  
 -- Issue #14990: Correctly fail with SyntaxError on invalid encoding
 -  declaration.
 +- Issue #15110: Fix the tracebacks generated by "import xxx" to not show the
 +  importlib stack frames.
  
 -- Issue #15247: FileIO now raises an error when given a file descriptor
 -  pointing to a directory.
 +- Issue #15020: The program name used to search for Python's path is now
 +  "python3" under Unix, not "python".
  
 -- Issue #5346: Preserve permissions of mbox, MMDF and Babyl mailbox
 -  files on flush().
 +- Issue #15033: Fix the exit status bug when modules invoked using -m swith,
 +  return the proper failure return value (1). Patch contributed by Jeff Knupp.
  
 -- Issue #10571: Fix the "--sign" option of distutils' upload command.
 -  Patch by Jakub Wilk.
 +- Issue #15229: An OSError subclass whose __init__ doesn't call back
 +  OSError.__init__ could produce incomplete instances, leading to crashes when
 +  calling str() on them.
  
 -- Issue #9559: If messages were only added, a new file is no longer
 -  created and renamed over the old file when flush() is called on an
 -  mbox, MMDF or Babyl mailbox.
 +- Issue 15307: Virtual environments now use symlinks with framework builds on
 +  Mac OS X, like other POSIX builds.
  
 -- Issue #14653: email.utils.mktime_tz() no longer relies on system
 -  mktime() when timezone offest is supplied.
 +Library
 +-------
  
 -- Fix GzipFile's handling of filenames given as bytes objects.
 +- Issue #15424: Add a __sizeof__ implementation for array objects.  Patch by
 +  Ludwig Hähne.
  
 -- Issue #15101: Make pool finalizer avoid joining current thread.
 +- Issue #15576: Allow extension modules to act as a package's __init__ module.
  
 -- Issue #15036: Mailbox no longer throws an error if a flush is done
 -  between operations when removing or changing multiple items in mbox,
 -  MMDF, or Babyl mailboxes.
 +- Issue #15502: Have importlib.invalidate_caches() work on sys.meta_path instead
 +  of sys.path_importer_cache.
  
 -- Issue #10133: Make multiprocessing deallocate buffer if socket read
 -  fails.  Patch by Hallvard B Furuseth.
 +- Issue #15163: Pydoc shouldn't list __loader__ as module data.
  
 -- Issue #13854: Make multiprocessing properly handle non-integer
 -  non-string argument to SystemExit.
 +- Issue #15471: Do not use mutable objects as defaults for
 +  importlib.__import__().
  
 -- Issue #12157: Make pool.map() empty iterables correctly.  Initial
 -  patch by mouad.
 +- Issue #15559: To avoid a problematic failure mode when passed to the bytes
 +  constructor, objects in the ipaddress module no longer implement __index__
 +  (they still implement __int__ as appropriate)
  
 -- Issue #14992: os.makedirs(path, exist_ok=True) would raise an OSError
 -  when the path existed and had the S_ISGID mode bit set when it was
 -  not explicitly asked for.  This is no longer an exception as mkdir
 -  cannot control if the OS sets that bit for it or not.
 +- Issue #15546: Fix handling of pathological input data in the peek() and
 +  read1() methods of the BZ2File, GzipFile and LZMAFile classes.
  
 -- Issue #14962: Update text coloring in IDLE shell window after changing
 -  options.  Patch by Roger Serwy.
 +- Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog
 +  ended with '\'. Patch by Roger Serwy.
  
 -- Issue #10997: Prevent a duplicate entry in IDLE's "Recent Files" menu.
 +- Issue #12655: Instead of requiring a custom type, os.sched_getaffinity and
 +  os.sched_setaffinity now use regular sets of integers to represent the CPUs a
 +  process is restricted to.
  
 -- Issue #14443: Tell rpmbuild to use the correct version of Python in
 -  bdist_rpm. Initial patch by Ross Lagerwall.
 +- Issue #15538: Fix compilation of the getnameinfo() / getaddrinfo() emulation
 +  code.  Patch by Philipp Hagemeister.
  
 -- Issue #14929: Stop Idle 3.x from closing on Unicode decode errors when
 -  grepping. Patch by Roger Serwy.
 +- Issue #15519: Properly expose WindowsRegistryFinder in importlib (and use the
 +  correct term for it). Original patch by Eric Snow.
  
 -- Issue #12510: Attempting to get invalid tooltip no longer closes Idle.
 -  Other tooltipss have been corrected or improved and the number of tests
 -  has been tripled. Original patch by Roger Serwy.
 +- Issue #15502: Bring the importlib ABCs into line with the current state of the
 +  import protocols given PEP 420. Original patch by Eric Snow.
  
 -- Issue #10365: File open dialog now works instead of crashing even when
 -  the parent window is closed before the dialog. Patch by Roger Serwy.
 +- Issue #15499: Launching a webbrowser in Unix used to sleep for a few seconds.
 +  Original patch by Anton Barkovsky.
  
 -- Issue #14876: Use user-selected font for highlight configuration.
 +- Issue #15463: The faulthandler module truncates strings to 500 characters,
 +  instead of 100, to be able to display long file paths.
  
 -- Issue #14920: Fix the help(urllib.parse) failure on locale C on terminals.
 -  Have ascii characters in help.
 +- Issue #6056: Make multiprocessing use setblocking(True) on the sockets it
 +  uses.  Original patch by J Derek Wilson.
  
 -- Issue #14863: Update the documentation of os.fdopen() to reflect the
 -  fact that it's only a thin wrapper around open() anymore.
 +- Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
  
 -- Issue #14036: Add an additional check to validate that port in urlparse does
 -  not go in illegal range and returns None.
 +- Issue #15041: Update "see also" list in tkinter documentation.
  
 -- Issue #14875: Use float('inf') instead of float('1e66666') in the json module.
 +- Issue #15413: os.times() had disappeared under Windows.
  
 -- Issue #14426: Correct the Date format in Expires attribute of Set-Cookie
 -  Header in Cookie.py.
 +- Issue #15402: An issue in the struct module that caused sys.getsizeof to
 +  return incorrect results for struct.Struct instances has been fixed.  Initial
 +  patch by Serhiy Storchaka.
  
 -- Issue #14721: Send the correct 'Content-length: 0' header when the body is an
 -  empty string ''. Initial Patch contributed by Arve Knudsen.
 +- Issue #15232: When mangle_from is True, email.Generator now correctly mangles
 +  lines that start with 'From ' that occur in a MIME preamble or epilogue.
  
 -- Issue #14072: Fix parsing of 'tel' URIs in urlparse by making the check for
 -  ports stricter.
 +- Issue #15094: Incorrectly placed #endif in _tkinter.c.  Patch by Serhiy
 +  Storchaka.
  
 -- Issue #9374: Generic parsing of query and fragment portions of url for any
 -  scheme. Supported both by RFC3986 and RFC2396.
 +- Issue #13922: argparse no longer incorrectly strips '--'s that appear after
 +  the first one.
  
 -- Issue #14798: Fix the functions in pyclbr to raise an ImportError
 -  when the first part of a dotted name is not a package. Patch by
 -  Xavier de Gaye.
 +- Issue #12353: argparse now correctly handles null argument values.
  
 -- Issue #14829: Fix bisect and range() indexing with large indices
 -  (>= 2 ** 32) under 64-bit Windows.
 +- Issue #10017, issue #14998: Fix TypeError using pprint on dictionaries with
 +  user-defined types as keys or other unorderable keys.
  
 -- Issue #14777: tkinter may return undecoded UTF-8 bytes as a string when
 -  accessing the Tk clipboard.  Modify clipboad_get() to first request type
 -  UTF8_STRING when no specific type is requested in an X11 windowing
 -  environment, falling back to the current default type STRING if that fails.
 -  Original patch by Thomas Kluyver.
 +- Issue #15397: inspect.getmodulename() is now based directly on importlib via a
 +  new importlib.machinery.all_suffixes() API.
  
 -- Issue #12541: Be lenient with quotes around Realm field of HTTP Basic
 -  Authentation in urllib2.
 +- Issue #14635: telnetlib will use poll() rather than select() when possible to
 +  avoid failing due to the select() file descriptor limit.
  
 -- Issue #14662: Prevent shutil failures on OS X when destination does not
 -  support chflag operations.  Patch by Hynek Schlawack.
 +- Issue #15180: Clarify posixpath.join() error message when mixing str & bytes.
  
 -- Issue #14157: Fix time.strptime failing without a year on February 29th.
 -  Patch by Hynek Schlawack.
 +- Issue #15343: pkgutil now includes an iter_importer_modules implementation for
 +  importlib.machinery.FileFinder (similar to the way it already handled
 +  zipimport.zipimporter).
  
 -- Issue #14768: os.path.expanduser('~/a') doesn't works correctly when HOME is '/'.
 +- Issue #15314: runpy now sets __main__.__loader__ correctly.
  
 -- Issue #14741: Fix missing support for Ellipsis ('...') in parser module.
 +- Issue #15357: The import emulation in pkgutil is now deprecated. pkgutil uses
 +  importlib internally rather than the emulation.
  
 -- Issue #14697: Fix missing support for set displays and set comprehensions in
 -  parser module.
 +- Issue #15233: Python now guarantees that callables registered with the atexit
 +  module will be called in a deterministic order.
  
 -- Issue #14701: Fix missing support for 'raise ... from' in parser module.
 +- Issue #15238: shutil.copystat now copies Linux "extended attributes".
  
 -- Issue #13183: Fix pdb skipping frames after hitting a breakpoint and running
 -  step.  Patch by Xavier de Gaye.
 +- Issue #15230: runpy.run_path now correctly sets __package__ as described in
 +  the documentation.
  
 -- Issue #14696: Fix parser module to understand 'nonlocal' declarations.
 +- Issue #15315: Support VS 2010 in distutils cygwincompiler.
  
 -- Issue #10941: Fix imaplib.Internaldate2tuple to produce correct result near
 -  the DST transition.  Patch by Joe Peterson.
 +- Issue #15294: Fix a regression in pkgutil.extend_path()'s handling of nested
 +  namespace packages.
  
 -- Issue #9154: Fix parser module to understand function annotations.
 +- Issue #15056: imp.cache_from_source() and source_from_cache() raise
 +  NotImplementedError when sys.implementation.cache_tag is set to None.
  
 -- Issue #14664: It is now possible to use @unittest.skip{If,Unless} on a
 -  test class that doesn't inherit from TestCase (i.e. a mixin).
 +- Issue #15256: Grammatical mistake in exception raised by imp.find_module().
  
 -- Issue #14160: TarFile.extractfile() failed to resolve symbolic links when
 -  the links were not located in an archive subdirectory.
 +- Issue #5931: wsgiref environ variable SERVER_SOFTWARE will specify an
 +  implementation specific term like CPython, Jython instead of generic "Python".
  
 -- Issue #14638: pydoc now treats non-string __name__ values as if they
 -  were missing, instead of raising an error.
 +- Issue #13248: Remove obsolete argument "max_buffer_size" of BufferedWriter and
 +  BufferedRWPair, from the io module.
  
 -- Issue #13684: Fix httplib tunnel issue of infinite loops for certain sites
 -  which send EOF without trailing \r\n.
 +- Issue #13248: Remove obsolete argument "version" of argparse.ArgumentParser.
  
 -- Issue #14629: Raise SyntaxError in tokenizer.detect_encoding if the
 -  first two lines have non-UTF-8 characters without an encoding declaration.
 +- Issue #14814: Implement more consistent ordering and sorting behaviour for
 +  ipaddress objects.
  
 -- Issue #14308: Fix an exception when a "dummy" thread is in the threading
 -  module's active list after a fork().
 +- Issue #14814: ipaddress network objects correctly return NotImplemented when
 +  compared to arbitrary objects instead of raising TypeError.
  
 -- Issue #14538: HTMLParser can now parse correctly start tags that contain
 -  a bare '/'.
 +- Issue #14990: Correctly fail with SyntaxError on invalid encoding declaration.
  
 -- Issue #14452: SysLogHandler no longer inserts a UTF-8 BOM into the message.
 +- Issue #14814: ipaddress now provides more informative error messages when
 +  constructing instances directly (changes permitted during beta due to
 +  provisional API status).
  
 -- Issue #13496: Fix potential overflow in bisect.bisect algorithm when applied
 -  to a collection of size > sys.maxsize / 2.
 +- Issue #15247: FileIO now raises an error when given a file descriptor pointing
 +  to a directory.
  
 -- Issue #14399: zipfile now recognizes that the archive has been modified even
 -  if only the comment is changed.  In addition, the TypeError that results from
 -  trying to set a non-binary value as a comment is now now raised at the time
 -  the comment is set rather than at the time the zipfile is written.
 +- Issue #15261: Stop os.stat(fd) crashing on Windows when fd not open.
  
 -- Issue #7978: socketserver now restarts the select() call when EINTR is
 -  returned.  This avoids crashing the server loop when a signal is received.
 -  Patch by Jerzy Kozera.
 +- Issue #15166: Implement imp.get_tag() using sys.implementation.cache_tag.
  
 -- Issue #14496: Fix wrong name in idlelib/tabbedpages.py.
 -  Patch by Popa Claudiu.
 +- Issue #15210: Catch KeyError when importlib.__init__ can't find
 +  _frozen_importlib in sys.modules, not ImportError.
  
 -- Issue #14482: Raise a ValueError, not a NameError, when trying to create
 -  a multiprocessing Client or Listener with an AF_UNIX type address under
 -  Windows.  Patch by Popa Claudiu.
 +- Issue #15030: importlib.abc.PyPycLoader now supports the new source size
 +  header field in .pyc files.
  
 -- Issue #14151: Raise a ValueError, not a NameError, when trying to create
 -  a multiprocessing Client or Listener with an AF_PIPE type address under
 -  non-Windows platforms.  Patch by Popa Claudiu.
 +- Issue #5346: Preserve permissions of mbox, MMDF and Babyl mailbox files on
 +  flush().
  
 -- Issue #13872: socket.detach() now marks the socket closed (as mirrored
 -  in the socket repr()).  Patch by Matt Joiner.
 +- Issue #10571: Fix the "--sign" option of distutils' upload command.  Patch by
 +  Jakub Wilk.
  
 -- Issue #14406: Fix a race condition when using ``concurrent.futures.wait(
 -  return_when=ALL_COMPLETED)``.  Patch by Matt Joiner.
 +- Issue #9559: If messages were only added, a new file is no longer created and
 +  renamed over the old file when flush() is called on an mbox, MMDF or Babyl
 +  mailbox.
  
 -- Issue #14409: IDLE now properly executes commands in the Shell window
 -  when it cannot read the normal config files on startup and
 -  has to use the built-in default key bindings.
 -  There was previously a bug in one of the defaults.
 +- Issue 10924: Fixed crypt.mksalt() to use a RNG that is suitable for
 +  cryptographic purpose.
  
 -- Issue #10340: asyncore - properly handle EINVAL in dispatcher constructor on
 -  OSX; avoid to call handle_connect in case of a disconnected socket which
 -  was not meant to connect.
 +- Issue #15184: Ensure consistent results of OS X configuration tailoring for
 +  universal builds by factoring out common OS X-specific customizations from
 +  sysconfig, distutils.sysconfig, distutils.util, and distutils.unixccompiler
 +  into a new module _osx_support.
  
 -- Issue #12757: Fix the skipping of doctests when python is run with -OO so
 -  that it works in unittest's verbose mode as well as non-verbose mode.
 -
 -- Issue #3573: IDLE hangs when passing invalid command line args
 -  (directory(ies) instead of file(s)) (Patch by Guilherme Polo)
 -
 -- Issue #13694: asynchronous connect in asyncore.dispatcher does not set addr
 -  attribute.
 -
 -- Issue #11686: Added missing entries to email package __all__ lists
 -  (mostly the new Bytes classes).
 -
 -- Issue #10484: Fix the CGIHTTPServer's PATH_INFO handling problem.
 -
 -- Issue #11199: Fix the with urllib which hangs on particular ftp urls.
 +C API
 +-----
  
 -- Issue #14062: Header objects now correctly respect the 'linesep' setting
 -  when processed by BytesParser (which smtplib.SMTP.send_message uses).
 +- Issue #15610: PyImport_ImportModuleEx() now uses a 'level' of 0 instead of -1.
  
 -- Issue #14291: Email now defaults to utf-8 for non-ASCII unicode headers
 -  instead of raising an error.  This fixes a regression relative to 2.7.
 +- Issues #15169, #14599: Strip out the C implementation of
 +  imp.source_from_cache() used by PyImport_ExecCodeModuleWithPathnames() and
 +  used the Python code instead. Leads to PyImport_ExecCodeModuleObject() to not
 +  try to infer the source path from the bytecode path as
 +  PyImport_ExecCodeModuleWithPathnames() does.
  
 -- Issue #5219: Prevent event handler cascade in IDLE.
 +Extension Modules
 +-----------------
  
 -- Issue #14184: Increase the default stack size for secondary threads on
 -  Mac OS X to avoid interpreter crashes when using threads on 10.7.
 +- Issue #6493: An issue in ctypes on Windows that caused structure bitfields
 +  of type ctypes.c_uint32 and width 32 to incorrectly be set has been fixed.
  
 -- Issue #10543: Fix unittest test discovery with Jython bytecode files.
 +- Issue #15194: Update libffi to the 3.0.11 release.
  
 -- Issue #14252: Fix subprocess.Popen.terminate() to not raise an error under
 -  Windows when the child process has already exited.
 +Tools/Demos
 +-----------
  
 -- Issue #14195: An issue that caused weakref.WeakSet instances to incorrectly
 -  return True for a WeakSet instance 'a' in both 'a < a' and 'a > a' has been
 -  fixed.
 +- Issue #15458: python-config gets a new option --configdir to print the $LIBPL
 +  value.
  
 -- Issue #14177: marshal.loads() now raises TypeError when given an unicode
 -  string.  Patch by Guilherme Gonçalves.
 +- Move importlib.test.benchmark to Tools/importbench.
  
 -- Issue #14159: Fix the len() of weak containers (WeakSet, WeakKeyDictionary,
 -  WeakValueDictionary) to return a better approximation when some objects
 -  are dead or dying.  Moreover, the implementation is now O(1) rather than
 -  O(n).
 +- Issue #12605: The gdb hooks for debugging CPython (within Tools/gdb) have been
 +  enhanced to show information on more C frames relevant to CPython within the
 +  "py-bt" and "py-bt-full" commands:
 +    * C frames that are waiting on the GIL
 +    * C frames that are garbage-collecting
 +    * C frames that are due to the invocation of a PyCFunction
  
 -- Issue #13125: Silence spurious test_lib2to3 output when in non-verbose mode.
 -  Patch by Mikhail Novikov.
 +Documentation
 +-------------
  
 -- Issue #13447: Add a test file to host regression tests for bugs in the
 -  scripts found in the Tools directory.
 +- Issue #15444: Use proper spelling for non-ASCII contributor names.  Patch
 +  by Serhiy Storchaka.
  
 -- Issue #8033: sqlite3: Fix 64-bit integer handling in user functions
 -  on 32-bit architectures. Initial patch by Philippe Devalkeneer.
 +- Issue #15295: Reorganize and rewrite the documentation on the import system.
  
 -Extension Modules
 ------------------
 +- Issue #15230: Clearly document some of the limitations of the runpy module and
 +  nudge readers towards importlib when appropriate.
  
 -- Issue #6493: An issue in ctypes on Windows that caused structure bitfields
 -  of type ctypes.c_uint32 and width 32 to incorrectly be set has been fixed.
 +- Issue #15053: Copy Python 3.3 import lock change notice to all relevant
 +  functions in imp instead of just at the top of the relevant section.
  
 -- Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c.
 +- Issue #15288: Link to the term "loader" in notes in pkgutil about how things
 +  won't work as expected in Python 3.3 and mark the requisite functions as
 +  "changed" since they will no longer work with modules directly imported by
 +  import itself.
  
 -- Issue #9041: An issue in ctypes.c_longdouble, ctypes.c_double, and
 -  ctypes.c_float that caused an incorrect exception to be returned in the
 -  case of overflow has been fixed.
 +- Issue #13557: Clarify effect of giving two different namespaces to exec or
 +  execfile().
  
 -- Issue #14212: The re module didn't retain a reference to buffers it was
 -  scanning, resulting in segfaults.
 +- Issue #15250: Document that filecmp.dircmp compares files shallowly. Patch
 +  contributed by Chris Jerdonek.
  
  Tests
  -----