diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2006-09-02 03:54:17 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2006-09-02 03:54:17 (GMT) |
commit | ced1218dd1b69ac848f8c79d1afaada5669af33c (patch) | |
tree | 597ddd3968f4db0a4b7fb6a6b6c238eb9e49319b | |
parent | 69e88975059b0c74e3e9a17dd46b715a532cfd20 (diff) | |
download | cpython-ced1218dd1b69ac848f8c79d1afaada5669af33c.zip cpython-ced1218dd1b69ac848f8c79d1afaada5669af33c.tar.gz cpython-ced1218dd1b69ac848f8c79d1afaada5669af33c.tar.bz2 |
Make decimal.ContextManager a private implementation detail of decimal.localcontext()
-rw-r--r-- | Lib/decimal.py | 29 | ||||
-rw-r--r-- | Lib/test/test_decimal.py | 15 |
2 files changed, 7 insertions, 37 deletions
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 @@ __all__ = [ '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 @@ def localcontext(ctx=None): >>> 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 @@ for name in rounding_functions: 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 ContextAPItests(unittest.TestCase): 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 @@ class WithStatementTest(unittest.TestCase): 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: |