[Python-checkins] python/nondist/peps pep-0343.txt,1.2,1.3

gvanrossum@users.sourceforge.net gvanrossum at users.sourceforge.net
Sat May 14 06:02:14 CEST 2005


Update of /cvsroot/python/python/nondist/peps
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9821

Modified Files:
	pep-0343.txt 
Log Message:
Various clarifications.  Mention Decimal context example.  Clarify
that I don't like having files etc. implement __enter__ and __exit__
directly.


Index: pep-0343.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0343.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- pep-0343.txt	14 May 2005 02:02:40 -0000	1.2
+++ pep-0343.txt	14 May 2005 04:02:10 -0000	1.3
@@ -57,6 +57,10 @@
         finally:
             abc.__exit__(exc)
 
+    Here, the variables 'abc' and 'exc' are internal variables and not
+    accessible to the user; they will most likely be implemented as
+    special registers or stack positions.
+
     If the "as VAR" part of the syntax is omitted, the "VAR =" part of
     the translation is omitted (but abc.__enter__() is still called).
 
@@ -114,6 +118,32 @@
     A robust implementation of such a decorator should be made part of
     the standard library.
 
+Other Optional Extensions
+
+    It would be possible to endow certain objects, like files,
+    sockets, and locks, with __enter__ and __exit__ methods so that
+    instead of writing
+
+        do locking(myLock):
+            BLOCK
+
+    one could write simply
+
+        do myLock:
+            BLOCK
+
+    I think we should be careful with this; it could lead to mistakes
+    like
+
+        f = open(filename)
+        do f:
+            BLOCK1
+        do f:
+            BLOCK2
+
+    which does not do what one might think (f is closed when BLOCK2 is
+    entered).
+
 Examples
 
     Several of these examples contain "yield None".  If PEP 342 is
@@ -194,6 +224,10 @@
             do redirecting_stdout(f):
                 print "Hello world"
 
+       This isn't thread-safe, of course, but neither is doing this
+       same dance manually.  In a single-threaded program (e.g., a
+       script) it is a totally fine way of doing things.
+
     6. A variant on opening() that also returns an error condition:
 
         @do_template
@@ -226,6 +260,10 @@
        by default all signals are blocked.  The implementation is left
        as an exercise to the reader.
 
+    8. Another use for this feature is the Decimal context.  It's left
+       as an exercise for the reader.  (Mail it to me if you'd like to
+       see it here.)
+
 Copyright
 
     This document has been placed in the public domain.



More information about the Python-checkins mailing list