Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
eebbbf86
Commit
eebbbf86
authored
Sep 02, 2006
by
Nick Coghlan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make decimal.ContextManager a private implementation detail of decimal.localcontext()
parent
4ccc4e5a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
37 deletions
+7
-37
Lib/decimal.py
Lib/decimal.py
+5
-24
Lib/test/test_decimal.py
Lib/test/test_decimal.py
+2
-13
No files found.
Lib/decimal.py
View file @
eebbbf86
...
...
@@ -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
)
...
...
Lib/test/test_decimal.py
View file @
eebbbf86
...
...
@@ -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
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment