diff --git a/Doc/includes/email-alternative-new-api.py b/Doc/includes/email-alternative-new-api.py
index eeabf34..c1255a6 100644
--- a/Doc/includes/email-alternative-new-api.py
+++ b/Doc/includes/email-alternative-new-api.py
@@ -19,7 +19,7 @@
 
 [1] http://www.yummly.com/recipe/Roasted-Asparagus-Epicurious-203718
 
---Éric
+--Pepé
 """)
 
 # Add the html version.  This converts the message into a multipart/alternative
diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst
index c2017cc..0aac1bf 100644
--- a/Doc/library/exceptions.rst
+++ b/Doc/library/exceptions.rst
@@ -265,7 +265,6 @@
       :exc:`mmap.error` have been merged into :exc:`OSError`.
 
    .. versionchanged:: 3.4
-
       The :attr:`filename` attribute is now the original file name passed to
       the function, instead of the name encoded to or decoded from the
       filesystem encoding.  Also, the :attr:`filename2` attribute was added.
diff --git a/Doc/library/smtplib.rst b/Doc/library/smtplib.rst
index eba8ae9..ec8dc9d 100644
--- a/Doc/library/smtplib.rst
+++ b/Doc/library/smtplib.rst
@@ -117,6 +117,9 @@
    Subclass of :exc:`OSError` that is the base exception class for all
    the other exceptions provided by this module.
 
+   .. versionchanged:: 3.4
+      SMTPException became subclass of :exc:`OSError`
+
 
 .. exception:: SMTPServerDisconnected
 
diff --git a/Doc/whatsnew/3.4.rst b/Doc/whatsnew/3.4.rst
index b0ea9ac..7f73830 100644
--- a/Doc/whatsnew/3.4.rst
+++ b/Doc/whatsnew/3.4.rst
@@ -406,10 +406,10 @@
   ``__main__.__file__`` when a script has been executed directly using
   a relative path (Contributed by Brett Cannon in :issue:`18416`).
 
-* Now all the UTF-\* codecs (except UTF-7) reject surrogates during both
+* All the UTF-\* codecs (except UTF-7) now reject surrogates during both
   encoding and decoding unless the ``surrogatepass`` error handler is used,
-  with the exception of the UTF-16 decoder that accepts valid surrogate pairs,
-  and the UTF-16 encoder that produces them while encoding non-BMP characters.
+  with the exception of the UTF-16 decoder (which accepts valid surrogate pairs)
+  and the UTF-16 encoder (which produces them while encoding non-BMP characters).
   Contributed by Victor Stinner, Kang-Hao (Kenny) Lu and Serhiy Storchaka in
   :issue:`12892`.
 
@@ -563,7 +563,7 @@
 The new :mod:`tracemalloc` module (defined in :pep:`454`) is a debug tool to
 trace memory blocks allocated by Python. It provides the following information:
 
-* Traceback where an object was allocated
+* Trace where an object was allocated
 * Statistics on allocated memory blocks per filename and per line number:
   total size, number and average size of allocated memory blocks
 * Compute the differences between two snapshots to detect memory leaks
@@ -643,7 +643,7 @@
 :func:`~base64.b85encode`, and :func:`~base64.b85decode` provide the ability to
 encode and decode binary data from and to ``Ascii85`` and the git/mercurial
 ``Base85`` formats, respectively.  The ``a85`` functions have options that can
-be sued to make them compatible with the variants of the ``Ascii85`` encoding,
+be used to make them compatible with the variants of the ``Ascii85`` encoding,
 including the Adobe variant.  (Contributed by Martin Morrison, the Mercurial
 project, Serhiy Storchaka, and Antoine Pitrou in :issue:`17618`.)
 
@@ -861,15 +861,15 @@
    :pep:`443` -- Single-dispatch generic functions
       PEP written and implemented by Łukasz Langa.
 
+:func:`~functools.total_ordering` now supports a return value of
+:const:`NotImplemented` from the underlying comparison function.  (Contributed
+by Katie Miller in :issue:`10042`.)
+
 A pure-python version of the :func:`~functools.partial` function is now in the
 stdlib; in CPython it is overridden by the C accelerated version, but it is
 available for other implementations to use.  (Contributed by Brian Thorne in
 :issue:`12428`.)
 
-:func:`~functools.total_ordering` now supports a return value of
-:const:`NotImplemented` from the underlying comparison function.  (Contributed
-by Katie Miller in :issue:`10042`.)
-
 
 gc
 --
@@ -1093,29 +1093,17 @@
 mmap
 ----
 
-mmap objects can now be weakref'ed.  (Contributed by Valerie Lambert in
+mmap objects can now be :mod:`weakref`\ ed.  (Contributed by Valerie Lambert in
 :issue:`4885`.)
 
 
-mock
-----
-
-:mod:`~unittest.mock` objects now inspect their specification signatures when
-matching calls, which means an argument can now be matched by either position
-or name, instead of only by position.  (Contributed by Antoine Pitrou in
-:issue:`17015`.)
-
-:func:`~mock.mock_open` objects now have ``readline`` and ``readlines``
-methods. (Contributed by Toshio Kuratomi in :issue:`17467`.)
-
-
 multiprocessing
 ---------------
 
 .. _whatsnew-multiprocessing-no-fork:
 
-On Unix, two new :ref:`start methods <multiprocessing-start-methods>`
-(``spawn`` and ``forkserver``) have been added for starting processes using
+On Unix two new :ref:`start methods <multiprocessing-start-methods>`,
+(``spawn`` and ``forkserver``, have been added for starting processes using
 :mod:`multiprocessing`.  These make the mixing of processes with threads more
 robust, and the ``spawn`` method matches the semantics that multiprocessing has
 always used on Windows.  New function
@@ -1141,7 +1129,7 @@
 :mod:`multiprocessing` now relies on :mod:`runpy` (which implements the
 ``-m`` switch) to initialise ``__main__`` appropriately in child processes
 when using the ``spawn`` or ``forkserver`` start methods. This resolves some
-edge cases where combining multiprocessing, the ``-m`` command line switch
+edge cases where combining multiprocessing, the ``-m`` command line switch,
 and explicit relative imports could cause obscure failures in child
 processes. (Contributed by Nick Coghlan in :issue:`19946`)
 
@@ -1149,29 +1137,29 @@
 operator
 --------
 
-There is now a pure-python version of the :mod:`operator` module available for
-reference and for use by alternate implementations of Python.  (Contributed by
-Zachary Ware in :issue:`16694`.)
-
 New function :func:`~operator.length_hint` provides an implementation of the
 specification for how the :meth:`~object.__length_hint__` special method should
 be used, as part of the :pep:`424` formal specification of this language
 feature.  (Contributed by Armin Ronacher in :issue:`16148`.)
 
+There is now a pure-python version of the :mod:`operator` module available for
+reference and for use by alternate implementations of Python.  (Contributed by
+Zachary Ware in :issue:`16694`.)
+
 
 os
 --
 
-New functions to get and set the :ref:`inheritable flag <fd_inheritance>` of a file
-descriptors or a Windows handle:
+There are new functions to get and set the :ref:`inheritable flag
+<fd_inheritance>` of a file descriptor (:func:`os.get_inheritable`,
+:func:`os.set_inheritable`) or a Windows handle
+(:func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`).
 
-* :func:`os.get_inheritable`, :func:`os.set_inheritable`
-* :func:`os.get_handle_inheritable`, :func:`os.set_handle_inheritable`
-
-The :mod:`os` module now provides a :func:`~os.cpu_count` function, analogous to
-the :func:`multiprocessing.cpu_count` function (which is now implemented in
-terms of the new :mod:`os` function).  (Contributed by Trent Nelson, Yogesh
-Chaudhari, Victor Stinner, and Charles-François Natali in :issue:`17914`.)
+New function :func:`~os.cpu_count` reports the number of CPUs available on the
+platform on which Python is running (or ``None`` if the count can't be
+determined).  The :func:`multiprocessing.cpu_count` function is now implemented
+in terms of this function).  (Contributed by Trent Nelson, Yogesh Chaudhari,
+Victor Stinner, and Charles-François Natali in :issue:`17914`.)
 
 :func:`os.path.samestat` is now available on the Windows platform (and the
 :func:`os.path.samefile` implementation is now shared between Unix and
@@ -1181,10 +1169,10 @@
 root on Windows. (Contributed by Tim Golden in :issue:`9035`.)
 
 :func:`os.open` supports two new flags on platforms that provide them,
-:data:`~os.O_TMPFILE` (unnamed temporary file, as of 3.4.0 release available
-only on Linux systems with a kernel version of 3.11 or newer that have uapi
-headers), and :data:`~os.O_PATH` (un-opened file descriptor).  (Contributed by
-Christian Heimes in :issue:`18673` and Benjamin Peterson, respectively.)
+:data:`~os.O_PATH` (un-opened file descriptor), and :data:`~os.O_TMPFILE`
+(unnamed temporary file; as of 3.4.0 release available only on Linux systems
+with a kernel version of 3.11 or newer that have uapi headers).  (Contributed
+by Christian Heimes in :issue:`18673` and Benjamin Peterson, respectively.)
 
 
 pdb
@@ -1214,7 +1202,7 @@
 :mod:`pickle` now supports (but does not use by default) a new pickle protocol,
 protocol 4.  This new protocol addresses a number of issues that were present
 in previous protocols, such as the serialization of nested classes, very large
-strings and containers, or classes whose :meth:`__new__` method takes
+strings and containers, and classes whose :meth:`__new__` method takes
 keyword-only arguments.  It also provides some efficiency improvements.
 
 .. seealso::
@@ -1269,11 +1257,11 @@
 pydoc
 -----
 
-The :mod:`pydoc` module is now based directly on the
-:func:`inspect.signature` introspection API, allowing it to provide
-signature information for a wider variety of callable objects. This change
-also means that ``__wrapped__`` attributes are now taken into account when
-display help information (Contributed by Larry Hastings in :issue:`19674`)
+The :mod:`pydoc` module is now based directly on the :func:`inspect.signature`
+introspection API, allowing it to provide signature information for a wider
+variety of callable objects. This change also means that ``__wrapped__``
+attributes are now taken into account when displaying help information
+(Contributed by Larry Hastings in :issue:`19674`)
 
 The :mod:`pydoc` module no longer displays the ``self`` parameter for
 already bound methods. Instead, it aims to always display the exact current
@@ -1362,7 +1350,7 @@
 -----
 
 The :class:`~smtpd.SMTPServer` and :class:`~smtpd.SMTPChannel` classes now
-accept a *map* keyword argument, which if specified is passed in to
+accept a *map* keyword argument which, if specified, is passed in to
 :class:`asynchat.async_chat` as its *map* argument.  This allows an application
 to avoid affecting the global socket map.  (Contributed by Vinay Sajip in
 :issue:`11959`.)
@@ -1374,7 +1362,7 @@
 :exc:`~smtplib.SMTPException` is now a subclass of :exc:`OSError`, which allows
 both socket level errors and SMTP protocol level errors to be caught in one
 try/except statement by code that only cares whether or not an error occurred.
-(:issue:`2118`).
+(Contributed by Ned Jackson Lovely in :issue:`2118`).
 
 
 socket
@@ -1400,10 +1388,10 @@
 sqlite3
 -------
 
-A new boolean parameter, *uri*, to the :func:`~sqlite3.connect` function can
-be used to indicate that the *database* parameter is a ``uri`` (see
-the `SQLite URI documentation <http://www.sqlite.org/uri.html>`_).
-(Contributed by poq in :issue:`13773`.)
+A new boolean parameter to the :func:`~sqlite3.connect` function, *uri*, can be
+used to indicate that the *database* parameter is a ``uri`` (see the `SQLite
+URI documentation <http://www.sqlite.org/uri.html>`_).  (Contributed by poq in
+:issue:`13773`.)
 
 
 ssl
@@ -1418,6 +1406,18 @@
 
 .. _whatsnew34-sslcontext:
 
+New function :func:`~ssl.create_default_context` provides a standard way to
+obtain an :class:`~ssl.SSLContext` whose settings are intended to be a
+reasonable balance between compatibility and security.  These settings are
+more stringent than the defaults provided by the :class:`~ssl.SSLContext`
+constructor, and may be adjusted in the future, without prior deprecation, if
+best-practice security requirements change.  The new recommended best
+practice for using stdlib libraries that support SSL is to use
+:func:`~ssl.create_default_context` to obtain an :class:`~ssl.SSLContext`
+object, modify it if needed, and then pass it as the *context* argument
+of the appropriate stdlib API.  (Contributed by Christian Heimes
+in :issue:`19689`.)
+
 :class:`~ssl.SSLContext` method :meth:`~ssl.SSLContext.load_verify_locations`
 accepts a new optional argument *cadata*, which can be used to provide PEM or
 DER encoded certificates directly via strings or bytes, respectively.
@@ -1435,7 +1435,7 @@
 ``X.509`` certs, ``X.509 CA`` certs, and certificate revocation lists (``crl``\
 s), as well as a :meth:`~ssl.SSLContext.get_ca_certs` method that returns a
 list of the loaded ``CA`` certificates.  (Contributed by Christian Heimes in
-and :issue:`18147`.)
+:issue:`18147`.)
 
 If OpenSSL 0.9.8 or later is available, :class:`~ssl.SSLContext` has an new
 attribute :attr:`~ssl.SSLContext.verify_flags` that can be used to control the
@@ -1454,14 +1454,6 @@
 (``purpose=``:data:`~ssl.Purpose.CLIENT_AUTH`).  (Contributed by Christian
 Heimes in :issue:`19292`.)
 
-New function :func:`~ssl.create_default_context` provides a standard way to
-obtain an :class:`~ssl.SSLContext` whose settings are intended to be a
-reasonable balance between compatibility and security.  These settings are
-more stringent than the defaults provided by the :class:`~ssl.SSLContext`
-constructor, and may be adjusted in the future, without prior deprecation, if
-best-practice security requirements change.  (Contributed by Christian Heimes
-in :issue:`19689`.)
-
 .. _whatsnew34-win-cert-store:
 
 Two new windows-only functions, :func:`~ssl.enum_certificates` and
@@ -1485,19 +1477,20 @@
 
 The :mod:`stat` module is now backed by a C implementation in :mod:`_stat`. A C
 implementation is required as most of the values aren't standardized and
-platform-dependent.  (Contributed by Christian Heimes in :issue:`11016`.)
+are platform-dependent.  (Contributed by Christian Heimes in :issue:`11016`.)
 
-The module supports new file types: door, event port and whiteout.
+The module supports new :mod:`~stat.ST_MODE` flags, :mod:`~stat.S_IFDOOR`,
+:attr:`~stat.S_IFPORT`, and :attr:`~stat.S_IFWHT`.  (Contributed by
+Christian Hiemes in :issue:`11016`.)
 
 
 struct
 ------
 
-:mod:`struct` now supports the streamed unpacking of a buffer containing
-repeated instances of a given format of data.  Both a module level
-:mod:`~struct.iter_unpack` function and a :meth:`struct.Struct.iter_unpack`
-method on compiled formats have been added.  (Contributed by Antoine Pitrou in
-:issue:`17804`.)
+New function :mod:`~struct.iter_unpack` and a new
+:meth:`struct.Struct.iter_unpack` method on compiled formats provide streamed
+unpacking of a buffer containing repeated instances of a given format of data.
+(Contributed by Antoine Pitrou in :issue:`17804`.)
 
 
 subprocess
@@ -1508,8 +1501,8 @@
 (Contributed by Zack Weinberg in :issue:`16624`.)
 
 :func:`~subprocess.getstatus` and :func:`~subprocess.getstatusoutput` now
-work on Windows.  This change was actually made in 3.3.4.  (Contributed
-by Tim Golden in :issue:`10197`.)
+work on Windows.  This change was actually inadvertently made in 3.3.4.
+(Contributed by Tim Golden in :issue:`10197`.)
 
 
 sunau
@@ -1536,9 +1529,9 @@
 ---
 
 New function :func:`sys.getallocatedblocks` returns the current number of
-blocks allocated by the interpreter (in CPython with the default
+blocks allocated by the interpreter.  (In CPython with the default
 ``--with-pymalloc`` setting, this is allocations made through the
-:c:func:`PyObject_Malloc` API).  This can be useful for tracking memory leaks,
+:c:func:`PyObject_Malloc` API.)  This can be useful for tracking memory leaks,
 especially if automated via a test suite.  (Contributed by Antoine Pitrou
 in :issue:`13390`.)
 
@@ -1692,6 +1685,14 @@
 Test discovery now works with namespace packages (Contributed by Claudiu Popa
 in :issue:`17457`.)
 
+:mod:`unittest.mock` objects now inspect their specification signatures when
+matching calls, which means an argument can now be matched by either position
+or name, instead of only by position.  (Contributed by Antoine Pitrou in
+:issue:`17015`.)
+
+:func:`~mock.mock_open` objects now have ``readline`` and ``readlines``
+methods. (Contributed by Toshio Kuratomi in :issue:`17467`.)
+
 
 venv
 ----
@@ -1844,7 +1845,7 @@
 implemented in C.
 
 Some standard library extension modules have been converted to use Argument
-Clinic in Python 3.4, and :mod:`pydoc` and :mod:`inspect` has been updated
+Clinic in Python 3.4, and :mod:`pydoc` and :mod:`inspect` have been updated
 accordingly.
 
 It is expected that signature metadata for programmatic introspection will
@@ -1879,7 +1880,7 @@
   marked as accepting ``const char *`` rather than ``char *`` (Contributed
   by Serhiy Storchaka in :issue:`1772673`).
 
-* New shell version of ``python-config``; can be used even when a python
+* A new shell version of ``python-config`` can be used even when a python
   interpreter is not available (for example, in cross compilation scenarios).
 
 * :c:func:`PyUnicode_FromFormat` now supports width and precision
@@ -2086,8 +2087,9 @@
 * The :mod:`formatter` module is pending deprecation and is slated for removal
   in Python 3.6.
 
-* MD5 as default digestmod for :mod:`hmac` is deprecated. Python 3.6 will
-  require an explicit digest name or constructor as *digestmod* argument.
+* ``MD5`` as the default *digestmod* for the :func:`hmac.new` function is
+  deprecated.  Python 3.6 will require an explicit digest name or constructor as
+  *digestmod* argument.
 
 * The internal ``Netrc`` class in the :mod:`ftplib` module has been documented
   as deprecated in its docstring for quite some time.  It now emits a
@@ -2099,9 +2101,6 @@
 
 * The *strict* argument of :class:`~html.parser.HTMLParser` is deprecated.
 
-* The :func:`hmac.new` *digestmod* keyword having a default value (currently
-  ``MD5``) is deprecated.
-
 * The :mod:`plistlib` :func:`~plistlib.readPlist`,
   :func:`~plistlib.writePlist`, :func:`~plistlib.readPlistFromBytes`, and
   :func:`~plistlib.writePlistToBytes` functions are deprecated in favor of the
@@ -2117,7 +2116,7 @@
   appropriate uses of :class:`io.TextIOWrapper` (if needed) and its *newline*
   argument.
 
-* The *parser* argument of :func:`~xml.etree.ElementTree.iterparse` has
+* The *parser* argument of :func:`xml.etree.ElementTree.iterparse` has
   been deprecated, as has the *html* argument of
   :func:`~xml.etree.ElementTree.XMLParser`.  To prepare for the removal of the
   latter, all arguments to ``XMLParser`` should be passed by keyword.
@@ -2308,7 +2307,7 @@
   no ``__wrapped__`` attribute.
 
 * :func:`inspect.getfullargspec` has been reimplemented on top of
-  :func`inspect.signature` and hence handles a much wider variety of callable
+  :func:`inspect.signature` and hence handles a much wider variety of callable
   objects than it did in the past. It is expected that additional builtin and
   extension module callables will gain signature metadata over the course of
   the Python 3.4 series. Code that assumes that
@@ -2321,8 +2320,10 @@
   iterating through :data:`sys.path_importer_cache` based on :data:`sys.path`
   will not find all keys. A module's ``__file__`` when imported in the current
   working directory will also now have an absolute path, including when using
-  ``-m`` with the interpreter (this does not influence when the path to a file
-  is specified on the command-line) (:issue:`18416`).
+  ``-m`` with the interpreter (except for ``__main__.__file__`` when a script
+  has been executed directly using a relative path) (Contributed by Brett
+  Cannon in :issue:`18416`).  is specified on the command-line)
+  (:issue:`18416`).
 
 * The removal of the *strict* argument to :class:`~http.client.HTTPConnection`
   and :class:`~http.client.HTTPSConnection` changes the meaning of the
@@ -2383,7 +2384,7 @@
   perpetually alive (for example, database connections kept in thread-local
   storage).  (:issue:`17094`.)
 
-* Parameter names in ``__annotations__`` dict are now mangled properly,
+* Parameter names in ``__annotations__`` dicts are now mangled properly,
   similarly to ``__kwdefaults__``. (Contributed by Yury Selivanov in
   :issue:`20625`).
 
@@ -2408,7 +2409,7 @@
 
 * The :func:`re.split`, :func:`re.findall`, and :func:`re.sub` functions, and
   the :meth:`~re.match.group` and :meth:`~re.match.groups` methods of
-  :class:``match`` objects now always return a *bytes* object when the string
+  ``match`` objects now always return a *bytes* object when the string
   to be matched is a :term:`bytes-like object`.  Previously the return type
   matched the input type, so if your code was depending on the return value
   being, say, a ``bytearray``, you will need to change your code.
