[Python-checkins] r45690 - python/trunk/Doc/whatsnew/whatsnew25.tex

andrew.kuchling python-checkins at python.org
Mon Apr 24 16:30:47 CEST 2006


Author: andrew.kuchling
Date: Mon Apr 24 16:30:47 2006
New Revision: 45690

Modified:
   python/trunk/Doc/whatsnew/whatsnew25.tex
Log:
Edits, using the new term 
'context specifier' in a few places

Modified: python/trunk/Doc/whatsnew/whatsnew25.tex
==============================================================================
--- python/trunk/Doc/whatsnew/whatsnew25.tex	(original)
+++ python/trunk/Doc/whatsnew/whatsnew25.tex	Mon Apr 24 16:30:47 2006
@@ -579,13 +579,12 @@
 %======================================================================
 \section{PEP 343: The 'with' statement\label{pep-343}}
 
-The '\keyword{with}' statement allows a clearer version of code that
-uses \code{try...finally} blocks to ensure that clean-up code is
-executed.
-
-In this section, I'll discuss the statement as it will commonly be
-used.  In the next section, I'll examine the implementation details
-and show how to write objects for use with this statement.
+The '\keyword{with}' statement clarifies code that previously would
+use \code{try...finally} blocks to ensure that clean-up code is
+executed.  In this section, I'll discuss the statement as it will
+commonly be used.  In the next section, I'll examine the
+implementation details and show how to write objects for use with this
+statement.
 
 The '\keyword{with}' statement is a new control-flow structure whose
 basic structure is:
@@ -660,21 +659,22 @@
 
 Under the hood, the '\keyword{with}' statement is fairly complicated.
 Most people will only use '\keyword{with}' in company with existing
-objects and don't need to know these details, so you can skip the
-following section if you like.  Authors of new objects will need to
-understand the details of the underlying implementation.
+objects and don't need to know these details, so you can skip the rest
+of this section if you like.  Authors of new objects will need to
+understand the details of the underlying implementation and should
+keep reading.
 
 A high-level explanation of the context management protocol is:
 
 \begin{itemize}
 \item The expression is evaluated and should result in an object
-with a \method{__context__()} method.
+with a \method{__context__()} method (called a ``context specifier'').
 
-\item This object's \method{__context__()} method is called, and must
-return another object that has \method{__enter__()} and
-\method{__exit__()}.
+\item The context specifier's \method{__context__()} method is called, 
+and must return another object (called a ``context manager'') that has
+\method{__enter__()} and \method{__exit__()} methods.
 
-\item This object's \method{__enter__()} method is called.  The value
+\item The context manager's \method{__enter__()} method is called.  The value
 returned is assigned to \var{VAR}.  If no \code{'as \var{VAR}'} clause
 is present, the value is simply discarded.
 
@@ -725,14 +725,14 @@
 method.  Sometimes an object can simply return \code{self}; the
 \module{threading} module's lock objects do this, for example.  For
 our database example, though, we need to create a new object; I'll
-call this class \class{DatabaseContext}.  Our \method{__context__()}
+call this class \class{DatabaseContextMgr}.  Our \method{__context__()}
 method must therefore look like this:
 
 \begin{verbatim}
 class DatabaseConnection:
     ...
     def __context__ (self):
-        return DatabaseContext(self)
+        return DatabaseContextMgr(self)
 
     # Database interface
     def cursor (self):
@@ -743,12 +743,12 @@
         "Rolls back current transaction"
 \end{verbatim}
 
-Instance of \class{DatabaseContext} need the connection object so that
+Instance of \class{DatabaseContextMgr} need the connection object so that
 the connection object's \method{commit()} or \method{rollback()}
 methods can be called:
 
 \begin{verbatim}
-class DatabaseContext:
+class DatabaseContextMgr:
     def __init__ (self, connection):
         self.connection = connection
 \end{verbatim}
@@ -760,7 +760,7 @@
 the cursor to a variable name.
 
 \begin{verbatim}
-class DatabaseContext:
+class DatabaseContextMgr:
     ...
     def __enter__ (self):
         # Code to start a new transaction
@@ -772,13 +772,15 @@
 where most of the work has to be done.  The method has to check if an
 exception occurred.  If there was no exception, the transaction is
 committed.  The transaction is rolled back if there was an exception.
-Here the code will just fall off the end of the function, returning 
-the default value of \code{None}.  \code{None} is false, so the exception
-will be re-raised automatically.  If you wished, you could be more explicit
-and add a \keyword{return} at the marked location.
+
+In the code below, execution will just fall off the end of the
+function, returning the default value of \code{None}.  \code{None} is
+false, so the exception will be re-raised automatically.  If you
+wished, you could be more explicit and add a \keyword{return}
+statement at the marked location.
 
 \begin{verbatim}
-class DatabaseContext:
+class DatabaseContextMgr:
     ...
     def __exit__ (self, type, value, tb):
         if tb is None:
@@ -830,8 +832,8 @@
 \end{verbatim}
 
 You can also use this decorator to write the \method{__context__()}
-method for a class without creating a new class to act as the context
-manager:
+method for a class without having to create a new class representing
+the context manager:
 
 \begin{verbatim}
 class DatabaseConnection:
@@ -1262,8 +1264,8 @@
 module's interface, will continue to be maintained in future versions
 of Python.  (Contributed by Armin Rigo.)
 
-Also, the \module{pstats} module used to analyze the data measured by
-the profiler now supports directing the output to any file stream 
+Also, the \module{pstats} module for analyzing the data measured by
+the profiler now supports directing the output to any file object
 by supplying a \var{stream} argument to the \class{Stats} constructor.
 (Contributed by Skip Montanaro.)
 


More information about the Python-checkins mailing list