[Python-checkins] python/nondist/peps pep-0340.txt,1.16,1.17

gvanrossum@users.sourceforge.net gvanrossum at users.sourceforge.net
Tue May 3 18:57:20 CEST 2005


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

Modified Files:
	pep-0340.txt 
Log Message:
Add another example (saving sys.stout).

Eradicate tabs.


Index: pep-0340.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0340.txt,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- pep-0340.txt	3 May 2005 16:32:24 -0000	1.16
+++ pep-0340.txt	3 May 2005 16:57:17 -0000	1.17
@@ -558,26 +558,42 @@
     6. It is possible to write a regular iterator with the
        semantics of example 1:
 
-	class locking:
-	   def __init__(self, lock):
-	       self.lock = lock
-	       self.state = 0
-	   def __next__(self, arg=None):
-	       # ignores arg
-	       if self.state:
-		   assert self.state == 1
-		   self.lock.release()
-		   self.state += 1
-		   raise StopIteration
-	       else:
-		   self.lock.acquire()
-		   self.state += 1
-		   return None
-	   def __exit__(self, type, value=None, traceback=None):
-	       assert self.state in (0, 1, 2)
-	       if self.state == 1:
-		   self.lock.release()
-	       raise type, value, traceback
+        class locking:
+           def __init__(self, lock):
+               self.lock = lock
+               self.state = 0
+           def __next__(self, arg=None):
+               # ignores arg
+               if self.state:
+                   assert self.state == 1
+                   self.lock.release()
+                   self.state += 1
+                   raise StopIteration
+               else:
+                   self.lock.acquire()
+                   self.state += 1
+                   return None
+           def __exit__(self, type, value=None, traceback=None):
+               assert self.state in (0, 1, 2)
+               if self.state == 1:
+                   self.lock.release()
+               raise type, value, traceback
+
+    7. Redirect stdout temporarily:
+
+        def saving_stdout(new_stdout):
+            save_stdout = sys.stdout
+            try:
+                sys.stdout = new_stdout
+                yield
+            finally:
+                sys.stdout = save_stdout
+
+       Used as follows:
+
+        block opening(filename, "w") as f:
+            block saving_stdout(f):
+                print "Hello world"
 
 Acknowledgements
 



More information about the Python-checkins mailing list