Make decimal.ContextManager a private implementation detail of decimal.localcontext()
diff --git a/Lib/decimal.py b/Lib/decimal.py
index a5176e6..a66beef 100644
--- a/Lib/decimal.py
+++ b/Lib/decimal.py
@@ -130,9 +130,6 @@
     'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING',
     'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN',
 
-    # helper for context management
-    'ContextManager',
-
     # Functions for manipulating contexts
     'setcontext', 'getcontext', 'localcontext'
 ]
@@ -501,8 +498,8 @@
     >>> print getcontext().prec
     28
     """
-    if ctx is None: ctx = getcontext().copy()
-    return ContextManager(ctx.copy())
+    if ctx is None: ctx = getcontext()
+    return _ContextManager(ctx)
 
 
 ##### Decimal class ###########################################
@@ -2219,30 +2216,14 @@
 
 del name, val, globalname, rounding_functions
 
-class ContextManager(object):
+class _ContextManager(object):
     """Context manager class to support localcontext().
 
-      Sets the supplied context in __enter__() and restores
+      Sets a copy of the supplied context in __enter__() and restores
       the previous decimal context in __exit__()
-
-    """
-    # The below can't be included in the docstring until Python 2.6
-    # as the doctest module doesn't understand __future__ statements
-    """
-    Sample usage:
-    >>> from __future__ import with_statement
-    >>> print getcontext().prec
-    28
-    >>> ctx = Context(prec=15)
-    >>> with ContextManager(ctx):
-    ...     print getcontext().prec
-    ...
-    15
-    >>> print getcontext().prec
-    28
     """
     def __init__(self, new_context):
-        self.new_context = new_context
+        self.new_context = new_context.copy()
     def __enter__(self):
         self.saved_context = getcontext()
         setcontext(self.new_context)
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 6e7faf5..841ea6f 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -1068,20 +1068,9 @@
 class WithStatementTest(unittest.TestCase):
     # Can't do these as docstrings until Python 2.6
     # as doctest can't handle __future__ statements
-    def test_ContextManager(self):
-        # The basic context manager uses the supplied context
-        # without making a copy of it
-        orig_ctx = getcontext()
-        new_ctx = Context()
-        with ContextManager(new_ctx) as enter_ctx:
-            set_ctx = getcontext()
-        final_ctx = getcontext()
-        self.assert_(orig_ctx is final_ctx, 'did not restore context correctly')
-        self.assert_(new_ctx is set_ctx, 'did not set correct context')
-        self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context')
 
     def test_localcontext(self):
-        # The helper function makes a copy of the supplied context
+        # Use a copy of the current context in the block
         orig_ctx = getcontext()
         with localcontext() as enter_ctx:
             set_ctx = getcontext()
@@ -1091,7 +1080,7 @@
         self.assert_(set_ctx is enter_ctx, '__enter__ returned wrong context')
 
     def test_localcontextarg(self):
-        # The helper function makes a copy of the supplied context
+        # Use a copy of the supplied context in the block
         orig_ctx = getcontext()
         new_ctx = Context(prec=42)
         with localcontext(new_ctx) as enter_ctx: