[Python-checkins] r45884 - peps/trunk/pep-0343.txt

nick.coghlan python-checkins at python.org
Wed May 3 11:41:55 CEST 2006


Author: nick.coghlan
Date: Wed May  3 11:41:53 2006
New Revision: 45884

Modified:
   peps/trunk/pep-0343.txt
Log:
Address some comments from Guido by cutting back on the overengineering in the terminology section. Also a few minor grammar cleanups and fixes I missed last night.

Modified: peps/trunk/pep-0343.txt
==============================================================================
--- peps/trunk/pep-0343.txt	(original)
+++ peps/trunk/pep-0343.txt	Wed May  3 11:41:53 2006
@@ -15,8 +15,8 @@
     it possible to factor out standard uses of try/finally statements.
 
     In this PEP, context managers provide __enter__() and __exit__()
-    methods that are invoked on entry to and exit from the managed
-    context that forms the body of the with statement.
+    methods that are invoked on entry to and exit from the body of the
+    with statement.
 
 Author's Note
 
@@ -50,8 +50,8 @@
     [2] and universally approved of.  I'm also changing the keyword to
     'with'.
 
-    Following acceptance of this PEP, the following PEPs have been
-    rejected due to overlap:
+    After acceptance of this PEP, the following PEPs were rejected due
+    to overlap:
 
     - PEP 310, Reliable Acquisition/Release Pairs.  This is the
       original with-statement proposal.
@@ -469,37 +469,29 @@
     and that objects that implement that protocol be known as "context
     managers". [4]
 
-    The code in the body of the with statement is a "managed context".
-    This term refers primarily to the code location, rather than to the
-    runtime environment established by the context manager.
-
     The expression immediately following the with keyword in the
     statement is a "context expression" as that expression provides the
     main clue as to the runtime environment the context manager
-    establishes for the duration of the managed context.
+    establishes for the duration of the statement body.
 
-    The value assigned to the target list after the as keyword is the
-    "context entry value", as that value is returned as the result of
-    entering the context.
-
-    These terms are based on the idea that the context expression
-    provides a context manager to appropriately handle entry into the
-    managed context. The context manager may also provide a meaningful
-    context entry value and perform clean up operations on exit from
-    the managed context.
-
-    The general term "context" is unfortunately ambiguous. If necessary,
-    it can be made more explicit by using the terms "context manager"
-    for the concrete object created by the context expression,
-    "managed context" for the code in the body of the with statement,
-    and "runtime context" or (preferebly) "runtime environment" for the
-    actual state modifications made by the context manager. When solely
-    discussing use of the with statement, the distinction between these
-    shouldn't matter too much as the context manager fully defines the
-    changes made to the runtime environment, and those changes apply for
-    the duration of the managed context. The distinction is more
-    important when discussing the process of implementing context
-    managers and the mechanics of the with statement itself.
+    The code in the body of the with statement and the variable name
+    (or names) after the as keyword don't really have special terms at
+    this point in time. The general terms "statement body" and "target
+    list" can be used, prefixing with "with" or "with statement" if the
+    terms would otherwise be unclear.
+
+    Given the existence of objects such as the decimal module's
+    arithmetic context, a term "context" is unfortunately ambiguous.
+    If necessary, it can be made more specific by using the terms
+    "context manager" for the concrete object created by the context
+    expression and "runtime context" or (preferably) "runtime
+    environment" for the actual state modifications made by the context
+    manager. When simply discussing use of the with statement, the
+    ambiguity shouldn't matter too much as the context expression fully
+    defines the changes made to the runtime environment.
+    The distinction is more important when discussing the mechanics of
+    the with statement itself and how to go about actually implementing
+    context managers.
 
 Caching Context Managers
 
@@ -531,7 +523,7 @@
 
     1. Greg Ewing raised the question of whether or not the term
        "context manager" was too generic and suggested "context guard"
-       as an alternative name.
+       as an alternative name. [16]
 
     2. In Python 2.5a2, the decorator in contextlib to create a
        context manager from a generator function is called
@@ -594,9 +586,9 @@
 Examples
 
     The generator based examples rely on PEP 342. Also, some of the
-    examples are likely to be unnecessary in practice, as the
-    appropriate objects, such as threading.RLock, will be able to be
-    used directly in with statements.
+    examples are unnecessary in practice, as the appropriate objects,
+    such as threading.RLock, are able to be used directly in with
+    statements.
 
     The tense used in the names of the example contexts is not
     arbitrary. Past tense ("-ed") is used when the name refers to an
@@ -755,9 +747,8 @@
             # so this must be outside the with-statement:
             return +s
 
-     9. Here's a proposed context manager for the decimal module:
+     9. Here's a simple context manager for the decimal module:
 
-         # This would be a new decimal.Context method
          @contextmanager
          def localcontext(ctx=None):
              """Set a new local decimal context for the block"""
@@ -906,7 +897,7 @@
     This PEP was first accepted by Guido at his EuroPython
     keynote, 27 June 2005.
     It was accepted again later, with the __context__ method added.
-    The PEP was implemented in subversion for Python 2.5a1
+    The PEP was implemented in Subversion for Python 2.5a1
     The __context__() method will be removed in Python 2.5a3
 
 
@@ -970,7 +961,7 @@
     [15] Guido kills the __context__() method
     http://mail.python.org/pipermail/python-dev/2006-April/064632.html
 
-    [16] Greg propose 'context guard' instead of 'context manager'
+    [16] Proposal to use 'context guard' instead of 'context manager'
     http://mail.python.org/pipermail/python-dev/2006-May/064676.html
 
 Copyright


More information about the Python-checkins mailing list