Branch merge
diff --git a/Doc/c-api/init.rst b/Doc/c-api/init.rst
index 1806867..4b70ec2 100644
--- a/Doc/c-api/init.rst
+++ b/Doc/c-api/init.rst
@@ -646,6 +646,14 @@
    :c:func:`PyGILState_Release` on the same thread.
 
 
+.. c:function:: PyThreadState PyGILState_GetThisThreadState()
+
+   Get the current thread state for this thread.  May return ``NULL`` if no
+   GILState API has been used on the current thread.  Note that the main thread
+   always has such a thread-state, even if no auto-thread-state call has been
+   made on the main thread.  This is mainly a helper/diagnostic function.
+
+
 The following macros are normally used without a trailing semicolon; look for
 example usage in the Python source distribution.
 
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst
index 92d5272..d95b33c 100644
--- a/Doc/library/multiprocessing.rst
+++ b/Doc/library/multiprocessing.rst
@@ -1609,7 +1609,7 @@
       the process pool as separate tasks.  The (approximate) size of these
       chunks can be specified by setting *chunksize* to a positive integer.
 
-   .. method:: map_async(func, iterable[, chunksize[, callback]])
+   .. method:: map_async(func, iterable[, chunksize[, callback[, error_callback]]])
 
       A variant of the :meth:`.map` method which returns a result object.
 
diff --git a/Doc/library/string.rst b/Doc/library/string.rst
index d45eb36..3f9ec0b 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -709,9 +709,9 @@
 to parse template strings.  To do this, you can override these class attributes:
 
 * *delimiter* -- This is the literal string describing a placeholder introducing
-  delimiter.  The default value ``$``.  Note that this should *not* be a regular
-  expression, as the implementation will call :meth:`re.escape` on this string as
-  needed.
+  delimiter.  The default value is ``$``.  Note that this should *not* be a
+  regular expression, as the implementation will call :meth:`re.escape` on this
+  string as needed.
 
 * *idpattern* -- This is the regular expression describing the pattern for
   non-braced placeholders (the braces will be added automatically as
diff --git a/Doc/library/timeit.rst b/Doc/library/timeit.rst
index a03e40e..0112994 100644
--- a/Doc/library/timeit.rst
+++ b/Doc/library/timeit.rst
@@ -191,13 +191,13 @@
 :keyword:`try`/:keyword:`except` to test for missing and present object
 attributes. ::
 
-   % timeit.py 'try:' '  str.__bool__' 'except AttributeError:' '  pass'
+   $ python -m timeit 'try:' '  str.__bool__' 'except AttributeError:' '  pass'
    100000 loops, best of 3: 15.7 usec per loop
-   % timeit.py 'if hasattr(str, "__bool__"): pass'
+   $ python -m timeit 'if hasattr(str, "__bool__"): pass'
    100000 loops, best of 3: 4.26 usec per loop
-   % timeit.py 'try:' '  int.__bool__' 'except AttributeError:' '  pass'
+   $ python -m timeit 'try:' '  int.__bool__' 'except AttributeError:' '  pass'
    1000000 loops, best of 3: 1.43 usec per loop
-   % timeit.py 'if hasattr(int, "__bool__"): pass'
+   $ python -m timeit 'if hasattr(int, "__bool__"): pass'
    100000 loops, best of 3: 2.23 usec per loop
 
 ::
@@ -238,10 +238,10 @@
 ``setup`` parameter which contains an import statement::
 
    def test():
-       "Stupid test function"
+       """Stupid test function"""
        L = [i for i in range(100)]
 
-   if __name__=='__main__':
+   if __name__ == '__main__':
        from timeit import Timer
        t = Timer("test()", "from __main__ import test")
        print(t.timeit())
diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst
index e995a7c..c34e043 100644
--- a/Doc/library/turtle.rst
+++ b/Doc/library/turtle.rst
@@ -18,10 +18,10 @@
 part of the original Logo programming language developed by Wally Feurzig and
 Seymour Papert in 1966.
 
-Imagine a robotic turtle starting at (0, 0) in the x-y plane.  Give it the
+Imagine a robotic turtle starting at (0, 0) in the x-y plane.  After an ``import turtle``, give it the
 command ``turtle.forward(15)``, and it moves (on-screen!) 15 pixels in the
 direction it is facing, drawing a line as it moves.  Give it the command
-``turtle.left(25)``, and it rotates in-place 25 degrees clockwise.
+``turtle.right(25)``, and it rotates in-place 25 degrees clockwise.
 
 .. sidebar:: Turtle star
 
diff --git a/Doc/whatsnew/2.7.rst b/Doc/whatsnew/2.7.rst
index d715617..98f8515 100644
--- a/Doc/whatsnew/2.7.rst
+++ b/Doc/whatsnew/2.7.rst
@@ -782,8 +782,8 @@
 
   (Contributed by Fredrik Johansson and Victor Stinner; :issue:`3439`.)
 
-* The :keyword:`import` statement will no longer try a relative import
-  if an absolute import (e.g. ``from .os import sep``) fails.  This
+* The :keyword:`import` statement will no longer try an absolute import
+  if a relative import (e.g. ``from .os import sep``) fails.  This
   fixes a bug, but could possibly break certain :keyword:`import`
   statements that were only working by accident.  (Fixed by Meador Inge;
   :issue:`7902`.)
diff --git a/Include/pystate.h b/Include/pystate.h
index 5d2ee63..b5fe1ad 100644
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -195,7 +195,7 @@
 
 /* Helper/diagnostic function - get the current thread state for
    this thread.  May return NULL if no GILState API has been used
-   on the current thread.  Note the main thread always has such a
+   on the current thread.  Note that the main thread always has such a
    thread-state, even if no auto-thread-state call has been made
    on the main thread.
 */
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index 3a806bf..ac02374 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -135,7 +135,9 @@
         proxies = urllib.request.getproxies_environment()
         # getproxies_environment use lowered case truncated (no '_proxy') keys
         self.assertEqual('localhost', proxies['no'])
-
+        # List of no_proxies with space.
+        self.env.set('NO_PROXY', 'localhost, anotherdomain.com, newdomain.com')
+        self.assertTrue(urllib.request.proxy_bypass_environment('anotherdomain.com'))
 
 class urlopen_HttpTests(unittest.TestCase):
     """Test urlopen() opening a fake http connection."""
diff --git a/Lib/turtle.py b/Lib/turtle.py
index 2ff5427..8fb366a 100644
--- a/Lib/turtle.py
+++ b/Lib/turtle.py
@@ -27,10 +27,10 @@
 kids. It was part of the original Logo programming language developed
 by Wally Feurzig and Seymour Papert in 1966.
 
-Imagine a robotic turtle starting at (0, 0) in the x-y plane. Give it
+Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it
 the command turtle.forward(15), and it moves (on-screen!) 15 pixels in
 the direction it is facing, drawing a line as it moves. Give it the
-command turtle.left(25), and it rotates in-place 25 degrees clockwise.
+command turtle.right(25), and it rotates in-place 25 degrees clockwise.
 
 By combining together these and similar commands, intricate shapes and
 pictures can easily be drawn.
diff --git a/Lib/turtledemo/about_turtle.txt b/Lib/turtledemo/about_turtle.txt
index e4ba217..d02c7b3 100644
--- a/Lib/turtledemo/about_turtle.txt
+++ b/Lib/turtledemo/about_turtle.txt
@@ -7,10 +7,10 @@
 kids. It was part of the original Logo programming language developed
 by Wally Feurzig and Seymour Papert in 1966.
 
-Imagine a robotic turtle starting at (0, 0) in the x-y plane. Give it
+Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it
 the command turtle.forward(15), and it moves (on-screen!) 15 pixels in
 the direction it is facing, drawing a line as it moves. Give it the
-command turtle.left(25), and it rotates in-place 25 degrees clockwise.
+command turtle.right(25), and it rotates in-place 25 degrees clockwise.
 
 By combining together these and similar commands, intricate shapes and
 pictures can easily be drawn.
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 1dda966..773025a 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -2265,7 +2265,8 @@
     # strip port off host
     hostonly, port = splitport(host)
     # check if the host ends with any of the DNS suffixes
-    for name in no_proxy.split(','):
+    no_proxy_list = [proxy.strip() for proxy in no_proxy.split(',')]
+    for name in no_proxy_list:
         if name and (hostonly.endswith(name) or host.endswith(name)):
             return 1
     # otherwise, don't bypass