Commit 21b9f6b1 authored by Raymond Hettinger's avatar Raymond Hettinger

Fix documentation nits for decimal context managers.

parent 45349b73
...@@ -448,27 +448,23 @@ active context. ...@@ -448,27 +448,23 @@ active context.
\begin{funcdesc}{localcontext}{\optional{c}} \begin{funcdesc}{localcontext}{\optional{c}}
Return a context manager that will set the current context for Return a context manager that will set the current context for
the active thread to a copy of \var{c} on entry to the with statement the active thread to a copy of \var{c} on entry to the with-statement
and restore the previous context when exiting the with statement. If and restore the previous context when exiting the with-statement. If
no context is specified, a copy of the current context is used. no context is specified, a copy of the current context is used.
\versionadded{2.5}
For example the following code increases the current decimal precision For example, the following code increases the current decimal precision
by 42 places, performs a calculation, and then automatically restores by 42 places, performs a calculation, and then automatically restores
the previous context: the previous context:
\begin{verbatim} \begin{verbatim}
from __future__ import with_statement from __future__ import with_statement
import decimal import decimal
with decimal.localcontext() as ctx: with localcontext() as ctx:
ctx.prec = 42 # Perform a high precision calculation ctx.prec = 42 # Perform a high precision calculation
s = calculate_something() s = calculate_something()
s = +s # Round the final result back to the default precision s = +s # Round the final result back to the default precision
\end{verbatim} \end{verbatim}
The context that is held by the context manager and made active in the
body of the \keyword{with} statement is a \emph{copy} of the context
you provide to this function, so modifying its attributes doesn't
affect anything except that temporary copy.
\end{funcdesc} \end{funcdesc}
New contexts can also be created using the \class{Context} constructor New contexts can also be created using the \class{Context} constructor
......
...@@ -685,20 +685,19 @@ the block is complete. ...@@ -685,20 +685,19 @@ the block is complete.
The \module{decimal} module's contexts, which encapsulate the desired The \module{decimal} module's contexts, which encapsulate the desired
precision and rounding characteristics for computations, provide a precision and rounding characteristics for computations, provide a
\method{context_manager()} method for getting a context manager: \function{localcontext()} function for getting a context manager:
\begin{verbatim} \begin{verbatim}
import decimal from decimal import Decimal, Context, localcontext
# Displays with default precision of 28 digits # Displays with default precision of 28 digits
v1 = decimal.Decimal('578') v = Decimal('578')
print v1.sqrt() print v.sqrt()
ctx = decimal.Context(prec=16) with localcontext(Context(prec=16)):
with ctx.context_manager():
# All code in this block uses a precision of 16 digits. # All code in this block uses a precision of 16 digits.
# The original context is restored on exiting the block. # The original context is restored on exiting the block.
print v1.sqrt() print v.sqrt()
\end{verbatim} \end{verbatim}
\subsection{Writing Context Managers\label{context-managers}} \subsection{Writing Context Managers\label{context-managers}}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment